Skip to content

feat: add native Grok Build ACP runtime - #4319

Open
radu2lupu wants to merge 8 commits into
block:mainfrom
radu2lupu:agent/native-grok-acp
Open

feat: add native Grok Build ACP runtime#4319
radu2lupu wants to merge 8 commits into
block:mainfrom
radu2lupu:agent/native-grok-acp

Conversation

@radu2lupu

@radu2lupu radu2lupu commented Aug 2, 2026

Copy link
Copy Markdown

Summary

  • Promote the existing Grok Build preset to a native ACP runtime.
  • Launch Grok through grok agent --always-approve stdio.
  • Add official CLI installation and login guidance, onboarding metadata and readiness, bundled logo routing, live model discovery, and mock catalog coverage.
  • Reserve grok from custom harness shadowing and remove the duplicate tier-2 preset.

Related issue

None found. The closest existing work was the native ACP runtime work already present in this fork. This PR promotes Grok from the existing tier-2 preset into the native runtime catalog.

Implementation

Grok speaks ACP natively, so this change does not add an adapter. Runtime metadata owns the command, arguments, installation guidance, and authentication guidance. Buzz discovers Grok models through buzz-acp models --json, so no static provider/model map was added. Onboarding uses the runtime catalog and includes Grok in its visible order and readiness checks.

Testing

  • cargo test --manifest-path desktop/src-tauri/Cargo.toml managed_agents::discovery::runtime_metadata (1 passed)
  • cargo fmt --manifest-path desktop/src-tauri/Cargo.toml -- --check
  • pnpm typecheck
  • Targeted onboarding and readiness tests (22 passed)
  • Full desktop test suite (3,905 passed)
  • Packaged macOS UI smoke test: isolated identity, Grok Build READY, Grok Build selected, live model selector showing Default model (grok-4.5)
  • Direct ACP smoke test with the real grok agent --always-approve stdio: modelId=grok-4.5, stopReason=end_turn
  • just ci ran through Rust, desktop, and web checks. The local mobile phase requires Dart, which is not installed.
  • The direct ACP run emitted warnings from unrelated user-global MCP configurations; Grok ACP completed successfully.

UI evidence

The packaged macOS smoke test reached the Grok onboarding and model-selection states described above.

Grok Build ready runtimes

Grok Build runtime dropdown

Deferred follow-up

Smart auto-response and thread participation are separate follow-up work: continue active threads, ignore membership or add-person events, and suppress messages clearly addressed to someone else. That needs persisted subscription policy and ACP event-routing changes.

Status

Draft. The GitHub CI, Docker image, and Desktop Release Candidate workflows are awaiting maintainer approval for this fork PR.

@radu2lupu
radu2lupu marked this pull request as ready for review August 2, 2026 16:49
@radu2lupu
radu2lupu requested a review from a team as a code owner August 2, 2026 16:49
radu2lupu and others added 5 commits August 7, 2026 19:05
Signed-off-by: radu2lupu <radu2lupu@gmail.com>
Signed-off-by: radu2lupu <radu2lupu@gmail.com>
Signed-off-by: radu2lupu <radu2lupu@gmail.com>
Admit human replies in active threads without a fresh @mention under
subscribe=mentions, with exclusive-other and agent-loop guards. Persist
active roots across harness restarts and rehydrate from relay history.
Desktop Agents setting injects BUZZ_ACP_THREAD_PARTICIPATION at spawn.

Also inject Fieldcraft env from ~/.fieldcraft/env into managed agents so
remote-memory CLI calls work outside interactive shells.

Signed-off-by: radu2lupu <radu2lupu@gmail.com>
Document remotes/branches and add scripts to rebase our Grok + thread
participation stack onto block/buzz main, then install the harness outside
the notarized app so updates never drop custom agent behavior.

Signed-off-by: radu2lupu <radu2lupu@gmail.com>
@radu2lupu
radu2lupu force-pushed the agent/native-grok-acp branch from 716ee71 to 05f1af3 Compare August 7, 2026 17:07
Thread participation alone missed the common case where the human posts
in the channel timeline without reply-thread e-tags. After a channel is
marked active (mention or prior continuation), bare human top-level
messages in that channel wake the agent. Exclusive @handoff and agent
authors still drop. Active channels persist with roots.

Signed-off-by: radu2lupu <radu2lupu@gmail.com>
Codex-ACP defaults to mode=agent (workspace-write, networkAccess=false).
Buzz was only applying ACP permission_mode strings like dontAsk, which are
not valid Codex mode ids and were skipped. Shell tools then failed MagicDNS
lookups and buzz messages send never published. Prefer agent-full-access
when session/new advertises it.

Signed-off-by: radu2lupu <radu2lupu@gmail.com>
Show real ACP progress on the thread being worked, not only the channel bar.
Adds working-anchor resolution, ThreadAgentWorkingIndicator, and related
desktop/mobile typing participation plumbing for native Grok ACP.

Signed-off-by: radu2lupu <radu2lupu@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant